package Logica;

import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;

public class Encriptacion {
	
	public Encriptacion(){
	}
	
	public byte[] encriptar(String toEncriptar){
		byte[] encriptado = null;
		try {
			// Generamos una clave de 128 bits adecuada para AES
			  KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
			  keyGenerator.init(128);
			  Key key = keyGenerator.generateKey();
			   
			  // Alternativamente, una clave que queramos que tenga al menos 16 bytes
			  // y nos quedamos con los bytes 0 a 15
			  key = new SecretKeySpec("una clave de 16 bytes".getBytes(),  0, 16, "AES");
 
			  // Se obtiene un cifrador AES
			  Cipher aes = Cipher.getInstance("AES/ECB/PKCS5Padding");
 
			  // Se inicializa para encriptacion y se encripta el texto,
			  // que debemos pasar como bytes.
			  int NEncritar = Cipher.ENCRYPT_MODE;
			  //Key key2 = (java.security.Key) key;
			  aes.init(NEncritar, (Key) key);
			  byte[] cadenaBytes = toEncriptar.getBytes();
			  encriptado = aes.doFinal(cadenaBytes);
 
		} catch (InvalidKeyException | NoSuchAlgorithmException | NoSuchPaddingException | IllegalBlockSizeException | BadPaddingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			encriptado = "El texto no se ha podido desencriptar.".getBytes();
		}
		return encriptado;
	}
}